{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import copy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "def define_Liao():\n",
    "    global c1, c2, c3, c4, c5\n",
    "    global ABC_order\n",
    "    if ABC_order == 5:\n",
    "        c1 = 5\n",
    "        c2 = 10\n",
    "        c3 = 10\n",
    "        c4 = 5\n",
    "        c5 = 1\n",
    "    elif ABC_order == 4:\n",
    "        c1 = 4\n",
    "        c2 = 6\n",
    "        c3 = 4\n",
    "        c4 = 1\n",
    "        c5 = 0\n",
    "    elif ABC_order == 3:\n",
    "        c1 = 3\n",
    "        c2 = 3\n",
    "        c3 = 1\n",
    "        c4 = 0\n",
    "        c5 = 0\n",
    "    else:\n",
    "       print('Error: Wrong Value')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Liao_ABC():\n",
    "    global c1,c2,c3,c4,c5\n",
    "    global Ez\n",
    "    global Ez1, Ez2, Ez3, Ez4,Ez5\n",
    "    global nx, ny\n",
    "    global ABC_order\n",
    "    for j in range(ny):\n",
    "        Ez[0, j] = (c1 * Ez1[1, j] )- (c2 * Ez2[2, j]) + (c3 * Ez3[3, j])-(c4 * Ez4[4, j]) + (c5 * Ez5[5, j])\n",
    "    for j in range(ny):\n",
    "        Ez[nx-1, j] = (c1 * Ez1[nx - 2, j] )- (c2 * Ez2[nx - 3, j] )+ (c3 * Ez3[nx - 4, j]) -(c4 * Ez4[nx - 5, j]) + (c5 * Ez5[nx - 6, j])\n",
    "    for i in range(1, nx-1):\n",
    "        Ez[i, 0] = (c1 * Ez1[i, 1]) - (c2 * Ez2[i, 2] )+ (c3 * Ez3[i, 3])-(c4 * Ez4[i, 4]) + (c5 * Ez5[i, 5])\n",
    "    for i in range(1, nx-1):\n",
    "        Ez[i, ny-1] = (c1 * Ez1[i, ny-2]) - (c2 * Ez2[i, ny-3]) + (c3 * Ez3[i, ny-4])-(c4 * Ez4[i, ny-5]) + (c5 * Ez5[i, ny-6])\n",
    "    if ABC_order == 5:\n",
    "        Ez5 = Ez4\n",
    "        Ez4 = Ez3\n",
    "        Ez3 = Ez2\n",
    "        Ez2 = Ez1\n",
    "        Ez1 = Ez\n",
    "    elif ABC_order == 4:\n",
    "        Ez4 = copy.deepcopy(Ez3)\n",
    "        Ez3 = copy.deepcopy(Ez2)\n",
    "        Ez2 = copy.deepcopy(Ez1)\n",
    "        Ez1 = copy.deepcopy(Ez)\n",
    "    elif ABC_order == 3:\n",
    "        Ez3 = Ez2\n",
    "        Ez2 = Ez1\n",
    "        Ez1 = Ez\n",
    "    else:\n",
    "        print('Error: Wrong Value')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "def define_media(iflaga):\n",
    "    global nx, ny, mxst, mxnd, myst, mynd\n",
    "    global mediaEz, mediaHx, mediaHy\n",
    "    if (iflaga == 2):\n",
    "        for i in range(nx):\n",
    "            for j in range(ny):\n",
    "                if (i >= mxst-1 and i <= mxnd-1):\n",
    "                    if (j >= myst-1 and j <= mynd-1):\n",
    "                        mediaEz[i, j] = 2\n",
    "        for i in range(nx):\n",
    "            for j in range(ny):\n",
    "                if (i >= mxst-1 and i <= mxnd-1):\n",
    "                    if (j >= myst-1 and j <= mynd - 2):\n",
    "                        mediaHx[i, j] = 2\n",
    "        for i in range(nx):\n",
    "            for j in range(ny):\n",
    "                if (i >= mxst and i <= mxnd - 1):\n",
    "                    if (j >= myst-1 and j <= mynd-1):\n",
    "                        mediaHy[i, j] = 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "def define_coefficients():\n",
    "\n",
    "    global Ca, Cb, Da, Db  # Define material based coefficients\n",
    "    global xmu, eps0, dt, ds\n",
    "    # Field Coefficients\n",
    "    dte = dt/(ds*eps0)\n",
    "    dtm = dt/(ds*xmu)\n",
    "    Da[0] = 1\n",
    "    Db[0] = dtm\n",
    "    Ca[0] = 1\n",
    "    Cb[0] = dte\n",
    "    Da[1] = 0\n",
    "    Db[1] = 0\n",
    "    Ca[1] = 0\n",
    "    Cb[1] = 0\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Source(n, sources):\n",
    "    # Creates a half-sinusoidal source between the time increments\n",
    "    # 1 and 10.%\n",
    "    # When source = 1 : Sinusoid\n",
    "    #               2 : Gaussian\n",
    "    #\n",
    "    ## For Gaussian Source\n",
    "    global Ezs\n",
    "    if sources == 2:\n",
    "        xndec = 10.0\n",
    "        xn0 = 4*xndec\n",
    "        Ezs = math.exp(-((n-xn0)/(xndec))**2)\n",
    "    elif sources == 1:\n",
    "        if ( n >=0 and n <= 9):\n",
    "            Ezs = math.sin(n*np.pi/10)\n",
    "    return Ezs\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "def adv_Ez(n, sources):\n",
    "    global Ez, Hx, Hy\n",
    "    global mediaEz\n",
    "    global Ca, Cb\n",
    "    global nx, ny\n",
    "    for i in range(nx):\n",
    "        for j in range(ny):\n",
    "            m = int(mediaEz[i, j]-1)\n",
    "            if (i == 5):\n",
    "                Es = Source(n, sources)\n",
    "            else:\n",
    "                Es = 0\n",
    "            if (i >= 1 and j >= 1):\n",
    "                Ez[i, j] = Ez[i, j] * Ca[m] + Cb[m] * (Hy[i, j] - Hy[i - 1, j]- (Hx[i, j] - Hx[i, j - 1])) + Es\n",
    "            elif(i >= 1 and j == 0):\n",
    "                Ez[i, j] = Ez[i, j] * Ca[m] + Cb[m] * (Hy[i, j] - Hy[i - 1, j]- Hx[i, j]) + Es"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "def adv_H():\n",
    "    global Ez, Hx, Hy\n",
    "    global mediaHx, mediaHy\n",
    "    global Da, Db\n",
    "    global nx, ny\n",
    "    for i in range(nx):\n",
    "        for j in range(ny-1):\n",
    "            m = int(mediaHx[i, j])-1\n",
    "            Hx[i, j] = Hx[i, j]*Da[m] - Db[m]*(Ez[i, j+1] - Ez[i, j])\n",
    "    for i in range(nx - 1):\n",
    "        for j in range(ny):\n",
    "            m = int(mediaHy[i, j])-1\n",
    "            Hy[i, j] = Hy[i, j]*Da[m] + Db[m]*(Ez[i+1, j] - Ez[i, j])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "def my_surface_plot(field):\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111, projection='3d')\n",
    "    xd = np.linspace(0, 10, 100)\n",
    "    yd = np.linspace(0, 10, 80)\n",
    "    [xdg, ydg] = np.meshgrid(xd, yd)\n",
    "    dem3d = ax.plot_surface(xdg, ydg, field, cmap='rainbow', edgecolor='none')\n",
    "    fig.colorbar(dem3d, shrink=0.5, aspect=5)\n",
    "\n",
    "    \n",
    "def my_line_plot(Ez_5, Ez_15, Ez_25, Ez_35, Ez_45, Ez_55, Ez_65, Ez_75, Ez_85, Ez_95, iflaga, source):\n",
    "    maxval=1.4\n",
    "    global strip\n",
    "    fig = plt.figure(figsize=(6,6))\n",
    "    plt.subplot(10, 1, 1)\n",
    "    plt.plot(range(len(Ez_5)), Ez_5, 'k', label='n=5')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 2)\n",
    "    plt.plot(range(len(Ez_15)), Ez_15, 'k', label='n=15')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 3)\n",
    "    plt.plot(range(len(Ez_25)), Ez_25, 'k', label='n=25')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 4)\n",
    "    plt.plot(range(len(Ez_35)), Ez_35, 'k', label='n=35')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 5)\n",
    "    plt.plot(range(len(Ez_45)), Ez_45, 'k', label='n=45')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 6)\n",
    "    plt.plot(range(len(Ez_55)), Ez_55, 'k', label='n=55')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 7)\n",
    "    plt.plot(range(len(Ez_65)), Ez_65, 'k', label='n=65')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 8)\n",
    "    plt.plot(range(len(Ez_75)), Ez_75, 'k', label='n=75')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 9)\n",
    "    plt.plot(range(len(Ez_85)), Ez_85, 'k', label='n=85')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    plt.xticks([])\n",
    "    plt.subplot(10, 1, 10)\n",
    "    plt.plot(range(len(Ez_95)), Ez_95, 'k', label='n=95')\n",
    "    plt.legend(loc=1)\n",
    "    plt.xlim([0, 80])\n",
    "    #plt.xticks([])\n",
    "    if iflaga == 1 and source == 1:\n",
    "        fig.suptitle('Line Plots for E-field with no obstacle for a sinusoid source, strip = %d' % strip)\n",
    "    elif iflaga == 2 and source == 1:\n",
    "        fig.suptitle('Line Plots for E-field with a PEC box for a sinusoid source, strip = %d' % strip)\n",
    "    elif iflaga == 1  and source == 2:\n",
    "        fig.suptitle('Line Plots for E-field with no obstacle box for a Gaussian source, strip = %d' % strip)\n",
    "    elif iflaga == 2  and source == 2:\n",
    "        fig.suptitle('Line Plots for E-field with a PEC box for a Gaussian source, strip = %d' % strip)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Routine to zero out the global variables\n",
    "#*************************\n",
    "# *************************\n",
    "def zeroing():\n",
    "    global nx, ny\n",
    "    global Ez, Hx, Hy\n",
    "    global mediaEz, mediaHx, mediaHy\n",
    "    global Ca, Cb, Da, Db\n",
    "    global Ez1, Ez2, Ez3, Ez4, Ez5\n",
    "# Clears but retains the variables in memory\n",
    "    Ez = np.zeros((nx, ny)) # z-component of E-field\n",
    "    Hx = np.zeros((nx, ny)) # x-component of H-field\n",
    "    Hy = np.zeros((nx, ny)) # y-component of H-field\n",
    "\n",
    "    Ez1 = np.zeros((nx, ny))\n",
    "    Ez2 = np.zeros((nx, ny))\n",
    "    Ez3 = np.zeros((nx, ny))\n",
    "    Ez4 = np.zeros((nx, ny))\n",
    "    Ez5 = np.zeros((nx, ny))\n",
    "\n",
    "    mediaEz = np.ones((nx, ny)) # z-component of E-field\n",
    "    mediaHx = np.ones((nx, ny)) #x-component of H-field\n",
    "    mediaHy = np.ones((nx, ny)) # x-component of H-field\n",
    "\n",
    "    Ca = np.zeros((2, 1)) # x-component of H-field\n",
    "    Cb = np.zeros((2, 1)) # x-component of H-field\n",
    "    Da = np.zeros((2, 1)) # x-component of H-field\n",
    "    Db = np.zeros((2, 1)) # x-component of H-field"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "def init_ex4():\n",
    "    global c, xmu, eps0, asize\n",
    "    global nx, ny, nt, mxst, mxnd, myst, mynd\n",
    "    global dt, ds\n",
    "    global Ez, Hx, Hy\n",
    "    global mediaEz, mediaHx, mediaHy\n",
    "    global Ca, Cb, Da, Db\n",
    "    global c1, c2, c3, c4, c5\n",
    "    global Ez1, Ez2, Ez3, Ez4, Ez5\n",
    "    global ABC_order\n",
    "\n",
    "    c = 2.99792458e8\n",
    "    xmu = 4*math.pi*1e-7\n",
    "    eps0 = 8.854187817e-12\n",
    "    asize = 5 # Space Dimension in meters\n",
    "    nx = 80     # Number of cells in x-direction\n",
    "    ny = 100     # Number of cells in y-direction\n",
    "    nt = 400    # Number of time steps\n",
    "    mxst = 17    # Start of PEC section in x-direction\n",
    "    mxnd = 49    # End of PEC section in x-direction\n",
    "    myst = 33   # Start of PEC section in y-direction\n",
    "    mynd = 65    # End of PEC section in y-direction\n",
    "    strip = 30\n",
    "    # % Initialize\n",
    "\n",
    "    Ez = np.zeros((nx, ny))\n",
    "    Hx = np.zeros((nx, ny))\n",
    "    Hy = np.zeros((nx, ny))\n",
    "\n",
    "    mediaEz = np.ones((nx, ny))\n",
    "    mediaHx = np.ones((nx, ny))\n",
    "    mediaHy = np.ones((nx, ny))\n",
    "\n",
    "    Ca = np.zeros((2, 1))\n",
    "    Cb = np.zeros((2, 1))\n",
    "    Da = np.zeros((2, 1))\n",
    "    Db = np.zeros((2, 1))\n",
    "\n",
    "    Ez1 = np.zeros((nx, ny))\n",
    "    Ez2 = np.zeros((nx, ny))\n",
    "    Ez3 = np.zeros((nx, ny))\n",
    "    Ez4 = np.zeros((nx, ny))\n",
    "    Ez5 = np.zeros((nx, ny))\n",
    "\n",
    "    Ez_5 = np.zeros((1, nx))\n",
    "    Ez_35 = np.zeros((1, nx))\n",
    "    Ez_65 = np.zeros((1, nx))\n",
    "    Ez_95 = np.zeros((1, nx))\n",
    "\n",
    "    ds = asize/(mxnd - mxst - 1)\n",
    "    dt = ds/(c*math.sqrt(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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m/546zC7ZbTWZuAiEJjPaXOllBqllNqhlNqRkJBwg6Ff67vvvqNChQp07NjxmuH169enWbNmfPfddzc1fyGEuBl+fn5MnjyZd9991+74efPmER0dTXR0NJUqVSrm6EoGeTo3G631TGAmGK+4FHQ+qampLFu2jH79+tmtK7dfv3689tprnD59mipVqhQ8YCGE0xg3bhzR0dGFOk+TycS0adNyLRMXF0fPnj1p3749f/zxB8HBwSxdupRSpUrlOt0tt9xC+/btOXLkSCFG7F6c8Uz0JFDDpr+6dZjdMkopLyAASMzntMXip59+4tKlS/Tv39/u+P79+6O1Zv78+cUcmRDCFR0+fJgxY8awb98+ypUrx+LFi5k6dWrW5VjbbuzYsfma5/DhwzGZTEyePBmpU8A+ZzwT3Q7UU0qFYiTAgcDgbGWWAUOBzUB/YL3WWiullgHzlVLvA9WAesC2Yovc6vLly4wfP54GDRrQpUsXu2UaN25Mp06deP311xk4cCDVqlUr5iiFEIUtrzPGohQaGorJZAIgIiKCuLg4Jk2aRGRkZIHmN2/ePIKDg0lKSqJfv37MnTuXhx9+uBAjdg1OdyZqvcf5JLAaOAAs0lrvU0q9rpTqbS32JRColDoCjAeet067D1gE7AdWAWO01hkASqkFGEm3gVIqXin1SFGtw0svvcSxY8f44osv8PHxsVtGKcVnn31GamrqdTf0hRDiRvn6+mb97+npidlsvqkz0eBg43ESf39/Bg8ezLZtxX4+UiI445koWusVwIpsw162+T8FuD+Had8E3rQzfFAhh2nX1q1bmT59Ok888QTt27fPtWzdunV57bXXeO6551i8ePF1T/EKIcTNiIyMLNCZqNls5sKFCwQFBZGens7y5ctzvKrm7pwyiZZUaWlpPProowQHB/PWW2/la5rx48ezcOFCnnzySTp16kT58uWLOEohhPhXSEgIly5dIi0tjSVLlrBmzRpq1apF9+7dSU9PJyMjgy5dujBy5EhHh+qUJIkWorfffpu9e/fy448/UrZs2XxN4+XlxZdffkmrVq2YMGECX375ZRFHKYRwNSEhIezd+29lbBMmTMj3tHFxcXaHSyMZ+eN090RLqn379vHmm28ycOBA7r777huatnnz5kyYMIFZs2axbt26IopQCCFEYZMkWghWrlzJHXfcQdmyZZk+fXqB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WNyon3/+mfDwcFavXs20adNYvnx5iUlEVapUYcWKFUyfPp21a9cSFhbGDz/84OiwhIs5fPgwY8aMYd++fZQrV47FixczderUay7XZnZjx469bvpvvvmGQYMGXTNs+PDhmEwmJk+enHklT2Tn6FNhZ+7kcq7jXbp0SY8ePVoDukGDBnrnzp2ODumm7N69Wzdv3lwDesCAAfrs2bOODkncJGe4nBsbG6vr1q2b1f/222/ryZMn53v6LVu26KZNm14zLD4+XmttfAe7du2qv/rqq+umk8u5rvGeqHBR69evJywsjM8++4zx48ezc+dOTCaTo8O6Kc2aNWPr1q1MnjyZ77//niZNmvDtt99iHHuEKDjbqiw9PT0xm835PhNduHDhdWehwcHGm4L+/v4MHjyYbdu2Ff1KlECSRIXTSUxM5PHHH6dz5854e3vz22+/8d5777lMu57e3t5MmjSJqKgoatasyQMPPEDPnj05cOCAo0MTLiYyMpLo6OjruhkzZmSVsVgsLFq06Jr7oWazmXPnzgFGtYbLly+nadOmxR5/SSBJVDgNs9nMhx9+SL169fj88895+umniY6OLvR6b51Fs2bN2LJlC++//z5btmyhWbNmjBs3jn/++cfRoQk3snHjRmrUqHHNK2Kpqal0796dsLAwTCYTwcHBjBw50oFROjFHX0925k7uiRYPi8WiV69erZs0aaIB3blzZ71nzx5Hh1Wszp49qx977DGtlNKBgYF66tSp+tKlS44OS+SDM9wTdRS5Jyr3RIUDWSwWli5dSrt27ejevTvJycksWbKEtWvXut2lo4oVK/Lpp5/y559/0qJFCyIjI6lVqxavvvoq58+fd3R4QogcSBIVxS4lJYWvv/6asLAw7rvvPs6cOcPHH3/Mvn37uPfee926Tk6TycSaNWvYsmULHTp04LXXXqNmzZqMGTOGHTt2YPzQF0I4C0miolhYLBY2btzIyJEjqVy5MkOHDkUpxf/+9z8OHTrE448/jp+fn6PDdBpt2rRhyZIl7Nmzh759+zJr1ixatWpFs2bNePfdd4mPj3d0iMKGO/64ccd1tsclGuUuKtIo9825ePEiv/76K2vXruXHH3/k2LFj3HLLLfTr148hQ4bQqVMnPDzkd1x+XLhwgUWLFjFnzhw2b94MQNOmTenRowfdu3enffv28iPEQWJjY/H393er5tC01iQmJpKUlERoaOg149ytUW6XSaJKqR7AdIyq/77QWr+dbbwv8DVG5fOJwACtdVxu85Qkmn/p6ekcPHiQ6Ohodu3axe+//862bdvIyMigdOnSdOzYkcGDB3Pfffdxyy23ODrcEu3QoUMsXbqU1atX89tvv5GWloaPjw/NmjUjIiKCiIgIWrRoQb169QgICHB0uC4vPT2d+Ph4t2tb08/Pj+rVq+Pt7X3NcEmiJZBSyhM4BHTFaE90OzBIa73fpswTQJjWerRSaiDQR2s9ILf5ShI1pKWlkZiYyLlz5zh37hwJCQmcOHGCuLi4rO7QoUOkpaUBxkvfJpOJLl260LVrV2699dZrXgQXhefy5cv88ssvbNy4kaioKP78808uXLiQNT4wMJDatWtTp04dqlatSqVKlahcuTKVK1emfPnylC1bloCAAMqWLcstt9yCp6en41ZGuARJoiWQUqot8KrWuru1fyKA1votmzKrrWU2K6W8gNNARZ3LBqhcubJ+8MEHbZdjb9m59tvKa1vbG599mL3+zGHZH722WCxZf207s9mc1aWnp5Oenk5qaiqpqamkpKSQkpLC5cuXuXz5MklJSVnJMbuyZcsSEhJCSEgI9evXz6oNpUGDBnh5lfi2DUokrTUxMTHs2rWLo0ePEhMTk/X39OnTXLlyJdfpvb298fPzo1SpUvj6+uLt7Z3VeXl54enpeU3n4eGBUgqlVNb/QNYw2/5MN/KdESXDTz/9ZPtZu1USdZUjXTBwwqY/HmiTUxlttPxyEQgEztkWUkqNAkZZ/+eLL77AOs11C80rwdmT1wGjIIk6+8HK9oCmlMo62GV2np6eWQdFLy8vvL298fX1xdfXl7Jly+Ln50eZMmXw9/fP+hsYGEhQUBAVK1YkKCiI6tWrU65cuTzXVxQvpRR16tShTp06dsdfuXKFs2fPcubMGS5cuMClS5e4dOkSFy9e5MqVK6SkpJCcnJz1YyrzR1ZmZ7FYyMjIyOpsf6Slp6cD1/6Yy+zPVJDvjBDOzFWSaKHRWs8EZgIopRKSkpKOOTgkIYRwatkeEKzlqDgcwVWS6Emghk1/deswe2XirZdzAzAeMMqR1rpiYQYphBDCtbjK+wXbgXpKqVCllA8wEFiWrcwyYKj1//7A+tzuhwohhBB5cYkzUes9zieB1RivuMzSWu9TSr2OUY/jMuBLYK5S6ghwHiPRCiGEEAXmEk/nCiGEEI7gKpdzhRBCiGLnEpdzi0pQUJAOCQlxdBjCBZnNZlJSUkhNTSUtLS3rVaPMzsfHx9EhClEgUVFR59zpoUxJorkICQlBaiwShcFsNrNu3Tq++uorVq9enWfD2zVr1qRv37707duXdu3aSU1CosRQSrnVa4FyTzQXUu2fuFlHjhzh008/Zd68eZw+fZoKFSrQp08fmjZtSr169ahXrx41atTgwoULnD59mtOnTxMXF8eKFStYs2YNaWlpVK5cmREjRvDMM88QGBjo6FUSIlfuVmORJNFcSBIVBXXu3Dlef/11PvnkE5RS9OrVi4cffphevXrl+1JtUlISK1as4JtvvmHJkiWUKVOGcePGMX78eKktSjgtd0ui8mCREIUoOTmZKVOmUKdOHT7++GMeeeQRjh07xg8//ECfPn1u6F6nv78/AwYM4Pvvv2fPnj10796dyZMnExISwttvv51jncZCiOLjEmei+WgGbRgwlX9rMfpQa/1FXvOVM1FxIzZu3Mjw4cOJiYnhnnvuYcqUKTRq1KhQl7Fr1y5eeuklfvzxR5o1a8bnn39OmzbZq4kWxUmaQnPvptCua/mjpHUYifMoUBvwAXYBjbOVGYaROG9o3hEREVqIvFy9elU//fTTWimla9eurdetW1fky1y6dKkODg7WSin91FNP6aSkpCJfprAvJiZGJyQkaIvF4uhQio3FYtEJCQk6JibmunEYFdw4PDcUV+cKl3NbA0e01jFa6zRgIXCvg2MSbmLr1q00b96cDz74gMcff5xdu3bRuXPnIl9u79692b9/P48//jgzZsygadOmbNy4sciXK66XkpJCYGCgWzXpppQiMDDQ7c6+7XGFJGqvGbRgO+X6KaV2K6W+U0rVsDNeiHzLyMjgzTff5LbbbuPq1ausXbuWjz76iDJlyhRbDGXLluWjjz7it99+w8vLi44dO/LCCy/IvVIHcKcEmskd19keV0ii+fEjEKK1DgPWAl/lVFApNUoptUMptSMhIaHYAhQlx99//03Xrl2ZNGkS999/P3v27KFLly4Oi+e2225j586djBgxgrfeeot27drx119/OSweIdyJKyTRPJtB01onaq1Trb1fABE5zUxrPVNr3VJr3bJiRbepdEPk04oVKwgPD2fr1q18+eWXzJ8/n4CAAEeHhb+/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",
      "text/plain": [
       "<Figure size 432x432 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "global strip\n",
    "init_ex4()\n",
    "iflaga = 1\n",
    "define_media(iflaga)\n",
    "define_coefficients()\n",
    "source = 2\n",
    "ABC_order = 4\n",
    "define_Liao()\n",
    "strip = 30\n",
    "for n in range(nt):\n",
    "    adv_Ez(n, source)\n",
    "    Liao_ABC()\n",
    "    adv_H()\n",
    "    # if n % 5 == 0:\n",
    "    #     my_surface_plot(Ez)\n",
    "    #     plt.title('3D plot of $E_z$ with PEC box')\n",
    "    #     plt.show()\n",
    "    #     plt.show()\n",
    "    if n == 5:\n",
    "        Ez_5 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 15:\n",
    "        Ez_15 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 25:\n",
    "        Ez_25 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 35:\n",
    "        Ez_35 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 45:\n",
    "        Ez_45 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 55:\n",
    "        Ez_55 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 65:\n",
    "        Ez_65 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 75:\n",
    "        Ez_75 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 85:\n",
    "        Ez_85 = copy.deepcopy(Ez[:, strip])\n",
    "    elif n == 95:\n",
    "        Ez_95 = copy.deepcopy(Ez[:, strip])\n",
    "\n",
    "my_line_plot(Ez_5, Ez_15, Ez_25, Ez_35, Ez_45, Ez_55, Ez_65, Ez_75, Ez_85, Ez_95, iflaga, source)\n",
    "zeroing()"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "db5e7618818223b409914352f6f17f673f33d2d3eabd9e64ff7d3a59fcd514ed"
  },
  "kernelspec": {
   "display_name": "Python 3.9.11 ('ml')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.11"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
